iT邦幫忙

2023 iThome 鐵人賽

DAY 30
2

嗨我是k66,本篇是30天鐵人賽最後一天,但它不是最後一篇(先賣關子XD)。


致謝

感謝Pei與我的三位好戰友(Emily, Phoebe, Ashely),謝謝他們參與整個參賽過程,我們在群裡每天互相加油打氣,一起參賽真的很好玩!感謝Zet花時間分享他寶貴的參賽經驗。謝謝家人支持鼓勵,以及三位國中同學(憨憨、李欣、多啦)在我們去墾丁玩水期間,特別等我趕文~

參賽心得

這是我第一次參加鐵人賽,本以為有餘裕,但在過程中仍會感到時間壓力,曾因程式碼卡住而差點遲交,還好最後有解決、順利挺過了。我很喜歡寫程式,很享受從無到有的過程,寫UEFI開機畫面的過程,從第一次Logo出現、顯示系統時間到讀使用者按鍵,處處給我驚喜與感動!我真的做出放上自己的Logo、很酷的開機畫面了!感謝EDK2的實作與UEFI的設計,大大減輕開發者的負擔!


名詞統整

  • ASM (Assembly):不同CPU有不同指令集架構,個人電腦常見的是x86架構,2020後的Macbook(M1、M2晶片)、樹梅派等則為ARM架構。
  • Bootloader:啟動作業系統的程式,知名的有類Unix的GRUB,及Windows Boot Manager。
  • GRUB:GNU計畫的boot loader,可開多重作業系統。
  • Kernel:提供抽象介面讓應用層能控制硬體。
  • Legacy BIOS:BIOS是基本輸入輸出系統,開機過程會先進入BIOS才進入作業系統,Legacy BIOS現今逐漸被UEFI所取代。
  • UEFI:取代Legacy BIOS,取代前者不便之處如:程式碼需切至真實模式(Real Mode)、1MB限制。
  • EDK2:實現UEFI規範的開發平台,提供打包好的程式減輕開發者負擔。
  • UEFI安全啟動:只會執行以密碼驗證的UEFI二進位檔案,以此保護使用者電腦。
  • UEFI-PI開機七階段:Day5
  • NASM:基於x86架構的assembler/disassembler, 可輸出多種格式如:COFF、OMF、.out、ELF、Mach-O、.bin。
  • ELF:可執行與可連結格式,本系列文用在bootloader.elf。
  • QEMU:虛擬機可類比CPU,本系列文用來執行efi檔案。
  • OVMF:用來在虛擬機啟動EDK2。
  • UEFI_APPICATION:共有3種—UefiMain、main、ShellAppMain。

參考資料

  1. Assembly:https://zh.wikipedia.org/zh-tw/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80
  2. Bootloader:https://zh.wikipedia.org/zh-tw/%E5%95%9F%E5%8B%95%E7%A8%8B%E5%BC%8F
  3. GRUB:https://zh.wikipedia.org/zh-tw/GNU_GRUB
  4. Kernel:https://zh.wikipedia.org/wiki/%E5%86%85%E6%A0%B8
  5. Legacy BIOS:https://zh.wikipedia.org/wiki/BIOS
  6. UEFI:https://zh.wikipedia.org/zh-tw/%E7%B5%B1%E4%B8%80%E5%8F%AF%E5%BB%B6%E4%BC%B8%E9%9F%8C%E9%AB%94
  7. EDK2:https://github.com/tianocore/edk2
  8. UEFI安全啟動:https://support.microsoft.com/zh-tw/windows/windows-11%E5%AE%89%E5%85%A8%E5%95%9F%E5%8B%95-a8ff1202-c0d9-42f5-940f-843abef64fad
  9. UEFI-PI開機七階段:https://github.com/tianocore-training/Presentation_FW/blob/main/FW/Presentations/_A_01_UEFI_Boot_Flow_Pres.pdf
  10. NASM:https://zh.wikipedia.org/zh-tw/Netwide_Assembler
  11. ELF:https://zh.wikipedia.org/zh-tw/%E5%8F%AF%E5%9F%B7%E8%A1%8C%E8%88%87%E5%8F%AF%E9%8F%88%E6%8E%A5%E6%A0%BC%E5%BC%8F
  12. QEMU:https://zh.wikipedia.org/zh-tw/QEMU
  13. OVMF is an EDK II based project to enable UEFI support for Virtual Machines. https://github.com/tianocore/tianocore.github.io/wiki/OVMF

推薦網站

  1. UEFI spec定義了完整UEFI功能。
  2. Tiancore EDK2 trainingEDK2官方完整簡報教學,建議搭其他推薦網站一起看,單獨看很難消化。
  3. 從零開始的裸機編程細講EDK2函式的網站。
  4. 谭玉刚的UEFI教學我初學時看的教學影片,放碼上來引用處XD
  5. TomatOS提供我Day11時第一次設計開機畫面的靈感。
  6. Pierre-François MAILLARD的uefi bmp app提供我bmp實作靈感。
  7. UEFI編程實踐作者的blog作者介紹的很詳細。

謝謝讀者一路相伴!祝大家身體健康,未來再相見!


上一篇
【Day 29】豬腳城結局 + 回顧所學 + UEFI debug技巧
下一篇
【漫畫篇】拯救豬腳城的完整漫畫
系列文
世界第一簡單的UEFI,實作打造自己的開機畫面31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言